A. Introduction

Aligned with the Sustainable Development Goals (SDGs), particularly SDG 1: No Poverty, this report examines the distribution of social assistance in Bandung City in 2022. As one of the major urban centers in Indonesia, Bandung faces significant challenges in addressing poverty. One common governmental strategy to tackle this issue is through the provision of social assistance (Bansos).

However, it raises questions about how the government distributes this social assistance and does the Bandung city government act based on data? To answer these questions, we examine the relevance of the dataset mapping poverty distribution in Bandung city with the distribution map of social assistance carried out by the Bandung city government.

This analysis is crucial for understanding the effectiveness of the social assistance programs implemented by the Bandung government in identifying and reaching areas (districts/subdistricts) that require additional attention and resources.

So the focus of this report is twofold: examining the poverty distribution map in Bandung City and assessing how the Bandung city government distributes social assistance. By exploring and analyzing data through descriptive statistics, data grouping, and visualization, this report aims to provide a comprehensive overview of social assistance distribution and poverty distribution in Bandung City.

Understanding these dynamics is essential for policymakers and relevant agencies to design and implement more effective and equitable social assistance policies. The findings are expected to guide targeted interventions, ensuring that aid reaches those most in need and contributes to the broader goal of poverty alleviation in Bandung City, in line with SDG 1: No Poverty.

==================================================================================================================

B. Data Description

Our dataset consists of two datasets obtained separately from the Bandung city government website.

Show Code of Data Description
# Dataset 1
df_sebaran <- read.csv("tahun-2022---data-sebaran-kemiskinan-di-kota-bandung.csv")
# Dataset 2
df_bantuan <- read.csv("tahun-2022---data-sebaran-kpm-bansos.csv")

kable(str(df_sebaran))
## 'data.frame':    151 obs. of  6 variables:
##  $ Kode.Kecamatan        : chr  "32.73.05" "32.73.05" "32.73.05" "32.73.05" ...
##  $ Kecamatan             : chr  "Andir" "Andir" "Andir" "Andir" ...
##  $ Kode.Kelurahan        : chr  "32.73.05.1006" "32.73.05.1003" "32.73.05.1002" "32.73.05.1005" ...
##  $ Kelurahan             : chr  "Campaka" "Ciroyom" "Dungus Cariang" "Garuda" ...
##  $ Jumlah.Keluarga.Miskin: int  2553 3443 3125 1666 1537 2948 1683 1127 2065 2101 ...
##  $ Jumlah.Individu       : int  7328 10205 8710 4812 3875 8388 4248 2997 5469 5779 ...
kable(str(df_bantuan))
## 'data.frame':    90 obs. of  4 variables:
##  $ Kode.Kecamatan: chr  "32.73.05" "32.73.05" "32.73.05" "32.73.20" ...
##  $ Kecamatan     : chr  "Andir" "Andir" "Andir" "Antapani" ...
##  $ Jenis.Bansos  : chr  "BPNT" "PKH" "PBI-JK" "BPNT" ...
##  $ Jumlah.KPM    : int  4427 1913 17878 1691 868 7592 2452 1205 10743 2188 ...
Show Dataset 1 & 2

Dataset 1

kable(df_sebaran)
Kode.Kecamatan Kecamatan Kode.Kelurahan Kelurahan Jumlah.Keluarga.Miskin Jumlah.Individu
32.73.05 Andir 32.73.05.1006 Campaka 2553 7328
32.73.05 Andir 32.73.05.1003 Ciroyom 3443 10205
32.73.05 Andir 32.73.05.1002 Dungus Cariang 3125 8710
32.73.05 Andir 32.73.05.1005 Garuda 1666 4812
32.73.05 Andir 32.73.05.1004 Kebon Jeruk 1537 3875
32.73.05 Andir 32.73.05.1001 Maleber 2948 8388
32.73.20 Antapani 32.73.20.1005 Antapani Kidul 1683 4248
32.73.20 Antapani 32.73.20.1001 Antapani Kulon 1127 2997
32.73.20 Antapani 32.73.20.1004 Antapani Tengah 2065 5469
32.73.20 Antapani 32.73.20.1006 Antapani Wetan 2101 5779
32.73.24 Arcamanik 32.73.24.1002 Cisaranten Bina Harapan 2066 5883
32.73.24 Arcamanik 32.73.24.1004 Cisaranten Endah 2437 6967
32.73.24 Arcamanik 32.73.24.1003 Cisaranten Kulon 2636 7036
32.73.24 Arcamanik 32.73.24.1001 Sukamiskin 2001 5448
32.73.10 Astanaanyar 32.73.10.1005 Cibadak 1709 4638
32.73.10 Astanaanyar 32.73.10.1003 Karang Anyar 590 1439
32.73.10 Astanaanyar 32.73.10.1001 Karasak 1730 4881
32.73.10 Astanaanyar 32.73.10.1002 Nyengseret 2029 5694
32.73.10 Astanaanyar 32.73.10.1004 Panjunan 1110 3185
32.73.10 Astanaanyar 32.73.10.1006 Pelindung Hewan 2290 6112
32.73.03 Babakan Ciparay 32.73.03.1002 Babakan 5430 15472
32.73.03 Babakan Ciparay 32.73.03.1001 Babakan Ciparay 4798 13093
32.73.03 Babakan Ciparay 32.73.03.1006 Cirangrang 1864 5325
32.73.03 Babakan Ciparay 32.73.03.1004 Margahayu Utara 3108 8344
32.73.03 Babakan Ciparay 32.73.03.1005 Margasuka 2161 6036
32.73.03 Babakan Ciparay 32.73.03.1003 Sukahaji 5528 16123
32.73.21 Bandung Kidul 32.73.21.1001 Batununggal 2377 6191
32.73.21 Bandung Kidul 32.73.21.1004 Kujangsari 2943 8271
32.73.21 Bandung Kidul 32.73.21.1003 Mengger 1103 2859
32.73.21 Bandung Kidul 32.73.21.1002 Wates 1397 3671
32.73.15 Bandung Kulon 32.73.15.1004 Caringin 963 2709
32.73.15 Bandung Kulon 32.73.15.1002 Cibuntu 2571 6644
32.73.15 Bandung Kulon 32.73.15.1005 Cigondewah Kaler 3376 9610
32.73.15 Bandung Kulon 32.73.15.1008 Cigondewah Kidul 1130 3096
32.73.15 Bandung Kulon 32.73.15.1007 Cigondewah Rahayu 1458 3839
32.73.15 Bandung Kulon 32.73.15.1001 Cijerah 3677 9980
32.73.15 Bandung Kulon 32.73.15.1006 Gempol Sari 2147 5478
32.73.15 Bandung Kulon 32.73.15.1003 Warung Muncang 4060 11611
32.73.09 Bandung Wetan 32.73.09.1001 Cihapit 106 247
32.73.09 Bandung Wetan 32.73.09.1003 Citarum 96 240
32.73.09 Bandung Wetan 32.73.09.1002 Taman Sari 3008 7882
32.73.12 Batununggal 32.73.12.1008 Binong 2855 7675
32.73.12 Batununggal 32.73.12.1003 Cibangkong 2510 6387
32.73.12 Batununggal 32.73.12.1001 Gumuruh 2448 6465
32.73.12 Batununggal 32.73.12.1004 Kacapiring 1431 3789
32.73.12 Batununggal 32.73.12.1006 Kebon Gedang 1525 3968
32.73.12 Batununggal 32.73.12.1005 Kebon Waru 2709 7637
32.73.12 Batununggal 32.73.12.1002 Maleer 3309 8918
32.73.12 Batununggal 32.73.12.1007 Samoja 2261 6110
32.73.04 Bojongloa Kaler 32.73.04.1004 Babakan Asih 2944 8421
32.73.04 Bojongloa Kaler 32.73.04.1002 Babakan Tarogong 5711 17219
32.73.04 Bojongloa Kaler 32.73.04.1003 Jamika 5224 15274
32.73.04 Bojongloa Kaler 32.73.04.1001 Kopo 6170 18772
32.73.04 Bojongloa Kaler 32.73.04.1005 Suka Asih 3861 11852
32.73.17 Bojongloa Kidul 32.73.17.1003 Cibaduyut 2062 5596
32.73.17 Bojongloa Kidul 32.73.17.1005 Cibaduyut Kidul 1535 4049
32.73.17 Bojongloa Kidul 32.73.17.1006 Cibaduyut Wetan 983 2634
32.73.17 Bojongloa Kidul 32.73.17.1002 Kebon Lega 2897 7529
32.73.17 Bojongloa Kidul 32.73.17.1004 Mekar Wangi 1850 4676
32.73.17 Bojongloa Kidul 32.73.17.1001 Situsaeur 3108 8405
32.73.22 Buahbatu 32.73.22.1003 Cijaura 3620 9936
32.73.22 Buahbatu 32.73.22.1004 Jati Sari 748 2014
32.73.22 Buahbatu 32.73.22.1002 Margasari 4922 13451
32.73.22 Buahbatu 32.73.22.1001 Sekejati 2157 5701
32.73.18 Cibeunying Kaler 32.73.18.1004 Cigadung 3765 10029
32.73.18 Cibeunying Kaler 32.73.18.1001 Cihaurgeulis 1488 3941
32.73.18 Cibeunying Kaler 32.73.18.1003 Neglasari 1219 3109
32.73.18 Cibeunying Kaler 32.73.18.1002 Sukaluyu 1489 3839
32.73.14 Cibeunying Kidul 32.73.14.1003 Cicadas 1950 5148
32.73.14 Cibeunying Kidul 32.73.14.1002 Cikutra 3916 11293
32.73.14 Cibeunying Kidul 32.73.14.1001 Padasuka 2609 6975
32.73.14 Cibeunying Kidul 32.73.14.1006 Pasirlayung 2558 6620
32.73.14 Cibeunying Kidul 32.73.14.1004 Sukamaju 1481 3960
32.73.14 Cibeunying Kidul 32.73.14.1005 Sukapada 2757 6993
32.73.25 Cibiru 32.73.25.1003 Cipadung 3453 8904
32.73.25 Cibiru 32.73.25.1001 Cisurupan 2740 7418
32.73.25 Cibiru 32.73.25.1004 Palasari 2678 6649
32.73.25 Cibiru 32.73.25.1002 Pasir Biru 2304 5811
32.73.06 Cicendo 32.73.06.1002 Arjuna 1453 3695
32.73.06 Cicendo 32.73.06.1001 Husein Sastranegara 2618 7459
32.73.06 Cicendo 32.73.06.1003 Pajajaran 4020 11237
32.73.06 Cicendo 32.73.06.1005 Pamoyanan 726 1803
32.73.06 Cicendo 32.73.06.1004 Pasirkaliki 1055 2854
32.73.06 Cicendo 32.73.06.1006 Sukaraja 2091 5244
32.73.08 Cidadap 32.73.08.1002 Ciumbuleuit 2901 7720
32.73.08 Cidadap 32.73.08.1001 Hegarmanah 2337 6335
32.73.08 Cidadap 32.73.08.1003 Ledeng 1294 3099
32.73.29 Cinambo 32.73.29.1004 Babakan Penghulu 982 2531
32.73.29 Cinambo 32.73.29.1002 Cisaranten Wetan 1065 2958
32.73.29 Cinambo 32.73.29.1003 Pakemitan 672 1633
32.73.29 Cinambo 32.73.29.1001 Sukamulya 835 2305
32.73.02 Coblong 32.73.02.1001 Cipaganti 1903 4883
32.73.02 Coblong 32.73.02.1004 Dago 4893 13647
32.73.02 Coblong 32.73.02.1002 Lebak Gede 1157 2818
32.73.02 Coblong 32.73.02.1006 Lebak Siliwangi 620 1646
32.73.02 Coblong 32.73.02.1003 Sadang Serang 3551 9907
32.73.02 Coblong 32.73.02.1005 Sekeloa 2729 7086
32.73.27 Gedebage 32.73.27.1001 Cimencrang 717 1831
32.73.27 Gedebage 32.73.27.1002 Cisaranten Kidul 2147 5237
32.73.27 Gedebage 32.73.27.1003 Rancabolang 968 2493
32.73.27 Gedebage 32.73.27.1004 Rancanumpang 522 1410
32.73.16 Kiaracondong 32.73.16.1005 Babakan Sari 5635 14763
32.73.16 Kiaracondong 32.73.16.1003 Babakan Surabaya 3566 9558
32.73.16 Kiaracondong 32.73.16.1004 Cicaheum 2871 7721
32.73.16 Kiaracondong 32.73.16.1002 Kebon Jayanti 2154 5958
32.73.16 Kiaracondong 32.73.16.1006 Kebon Kangkung 1971 5086
32.73.16 Kiaracondong 32.73.16.1001 Sukapura 4690 12713
32.73.13 Lengkong 32.73.13.1003 Burangrang 1264 3438
32.73.13 Lengkong 32.73.13.1001 Cijagra 821 2207
32.73.13 Lengkong 32.73.13.1007 Cikawao 1584 4410
32.73.13 Lengkong 32.73.13.1002 Lingkar Selatan 617 1452
32.73.13 Lengkong 32.73.13.1006 Malabar 925 2457
32.73.13 Lengkong 32.73.13.1004 Paledang 969 2636
32.73.13 Lengkong 32.73.13.1005 Turangga 671 1760
32.73.30 Mandalajati 32.73.30.1001 Jatihandap 3994 10766
32.73.30 Mandalajati 32.73.30.1002 Karang Pamulang 2582 6527
32.73.30 Mandalajati 32.73.30.1003 Pasir Impun 2241 6054
32.73.30 Mandalajati 32.73.30.1004 Sindang Jaya 2011 5553
32.73.28 Panyileukan 32.73.28.1004 Cipadung Kidul 813 2009
32.73.28 Panyileukan 32.73.28.1003 Cipadung Kulon 1865 4993
32.73.28 Panyileukan 32.73.28.1001 Cipadung Wetan 811 2270
32.73.28 Panyileukan 32.73.28.1002 Mekar Mulya 564 1290
32.73.23 Rancasari 32.73.23.1001 Cipamokolan 1794 4540
32.73.23 Rancasari 32.73.23.1002 Derwati 2697 7327
32.73.23 Rancasari 32.73.23.1003 Manjahlega 1443 3832
32.73.23 Rancasari 32.73.23.1004 Mekar Jaya 1654 4183
32.73.11 Regol 32.73.11.1002 Ancol 1071 2799
32.73.11 Regol 32.73.11.1004 Balong Gede 773 1909
32.73.11 Regol 32.73.11.1006 Ciateul 640 1596
32.73.11 Regol 32.73.11.1001 Cigereleng 961 2481
32.73.11 Regol 32.73.11.1005 Ciseureuh 2213 5695
32.73.11 Regol 32.73.11.1007 Pasirluyu 2533 6613
32.73.11 Regol 32.73.11.1003 Pungkur 848 2206
32.73.07 Sukajadi 32.73.07.1002 Cipedes 4542 13111
32.73.07 Sukajadi 32.73.07.1001 Pasteur 2256 6097
32.73.07 Sukajadi 32.73.07.1005 Sukabungah 3473 9922
32.73.07 Sukajadi 32.73.07.1004 Sukagalih 2785 8283
32.73.07 Sukajadi 32.73.07.1003 Sukawarna 1578 4341
32.73.01 Sukasari 32.73.01.1002 Gegerkalong 2179 5664
32.73.01 Sukasari 32.73.01.1003 Isola 1433 3840
32.73.01 Sukasari 32.73.01.1004 Sarijadi 2209 5723
32.73.01 Sukasari 32.73.01.1001 Sukarasa 1638 4523
32.73.19 Sumur Bandung 32.73.19.1004 Babakan Ciamis 866 2236
32.73.19 Sumur Bandung 32.73.19.1001 Braga 636 1689
32.73.19 Sumur Bandung 32.73.19.1003 Kebon Pisang 1227 3298
32.73.19 Sumur Bandung 32.73.19.1002 Merdeka 436 900
32.73.26 Ujungberung 32.73.26.1004 Cigending 2518 6484
32.73.26 Ujungberung 32.73.26.1007 Pasanggrahan 3058 7532
32.73.26 Ujungberung 32.73.26.1003 Pasir Endah 1942 5168
32.73.26 Ujungberung 32.73.26.1006 Pasirjati 2805 7163
32.73.26 Ujungberung 32.73.26.1005 Pasir Wangi 3034 8197

Dataset 2

kable(df_bantuan)
Kode.Kecamatan Kecamatan Jenis.Bansos Jumlah.KPM
32.73.05 Andir BPNT 4427
32.73.05 Andir PKH 1913
32.73.05 Andir PBI-JK 17878
32.73.20 Antapani BPNT 1691
32.73.20 Antapani PKH 868
32.73.20 Antapani PBI-JK 7592
32.73.24 Arcamanik BPNT 2452
32.73.24 Arcamanik PKH 1205
32.73.24 Arcamanik PBI-JK 10743
32.73.10 Astanaanyar BPNT 2188
32.73.10 Astanaanyar PKH 1093
32.73.10 Astanaanyar PBI-JK 11928
32.73.03 Babakan Ciparay BPNT 7416
32.73.03 Babakan Ciparay PKH 3470
32.73.03 Babakan Ciparay PBI-JK 31468
32.73.21 Bandung Kidul BPNT 2190
32.73.21 Bandung Kidul PKH 1273
32.73.21 Bandung Kidul PBI-JK 10405
32.73.15 Bandung Kulon BPNT 5391
32.73.15 Bandung Kulon PKH 3060
32.73.15 Bandung Kulon PBI-JK 27678
32.73.09 Bandung Wetan BPNT 829
32.73.09 Bandung Wetan PKH 451
32.73.09 Bandung Wetan PBI-JK 3368
32.73.12 Batununggal BPNT 4328
32.73.12 Batununggal PKH 2341
32.73.12 Batununggal PBI-JK 21677
32.73.04 Bojongloa Kaler BPNT 8475
32.73.04 Bojongloa Kaler PKH 3671
32.73.04 Bojongloa Kaler PBI-JK 34688
32.73.17 Bojongloa Kidul BPNT 3856
32.73.17 Bojongloa Kidul PKH 2065
32.73.17 Bojongloa Kidul PBI-JK 18011
32.73.22 Buahbatu BPNT 3012
32.73.22 Buahbatu PKH 1385
32.73.22 Buahbatu PBI-JK 13937
32.73.18 Cibeunying Kaler BPNT 1859
32.73.18 Cibeunying Kaler PKH 959
32.73.18 Cibeunying Kaler PBI-JK 7911
32.73.14 Cibeunying Kidul BPNT 3573
32.73.14 Cibeunying Kidul PKH 1943
32.73.14 Cibeunying Kidul PBI-JK 15364
32.73.25 Cibiru BPNT 2784
32.73.25 Cibiru PKH 1648
32.73.25 Cibiru PBI-JK 12331
32.73.06 Cicendo BPNT 3539
32.73.06 Cicendo PKH 1452
32.73.06 Cicendo PBI-JK 12684
32.73.08 Cidadap BPNT 2126
32.73.08 Cidadap PKH 880
32.73.08 Cidadap PBI-JK 6827
32.73.29 Cinambo BPNT 1227
32.73.29 Cinambo PKH 622
32.73.29 Cinambo PBI-JK 4170
32.73.02 Coblong BPNT 4061
32.73.02 Coblong PKH 1799
32.73.02 Coblong PBI-JK 16713
32.73.27 Gedebage BPNT 1216
32.73.27 Gedebage PKH 670
32.73.27 Gedebage PBI-JK 4526
32.73.16 Kiaracondong BPNT 5119
32.73.16 Kiaracondong PKH 2391
32.73.16 Kiaracondong PBI-JK 23076
32.73.13 Lengkong BPNT 1735
32.73.13 Lengkong PKH 749
32.73.13 Lengkong PBI-JK 8209
32.73.30 Mandalajati BPNT 2590
32.73.30 Mandalajati PKH 1279
32.73.30 Mandalajati PBI-JK 11906
32.73.28 Panyileukan BPNT 1098
32.73.28 Panyileukan PKH 493
32.73.28 Panyileukan PBI-JK 4384
32.73.23 Rancasari BPNT 1903
32.73.23 Rancasari PKH 1036
32.73.23 Rancasari PBI-JK 8389
32.73.11 Regol BPNT 2504
32.73.11 Regol PKH 1244
32.73.11 Regol PBI-JK 11546
32.73.07 Sukajadi BPNT 5079
32.73.07 Sukajadi PKH 2258
32.73.07 Sukajadi PBI-JK 20262
32.73.01 Sukasari BPNT 2229
32.73.01 Sukasari PKH 861
32.73.01 Sukasari PBI-JK 8647
32.73.19 Sumur Bandung BPNT 993
32.73.19 Sumur Bandung PKH 372
32.73.19 Sumur Bandung PBI-JK 3671
32.73.26 Ujungberung BPNT 3202
32.73.26 Ujungberung PKH 2096
32.73.26 Ujungberung PBI-JK 16438

==================================================================================================================

C. Data Preprocessing:

Show code
# Fungsi mengecek kualitas data
check_data_quality <- function(df, df_name) {
  results <- data.frame(
    Test = c("Missing Values", "Duplicate Rows", "Incorrect Data Formats"),
    Result = c(0, 0, 0)
  )
  
  # Chek missing values
  missing_values <- sum(is.na(df))
  results$Result[1] <- ifelse(missing_values > 0, 1, 0)
  
  # Chek data yang duplikat
  duplicate_rows <- nrow(df[duplicated(df), ])
  results$Result[2] <- ifelse(duplicate_rows > 0, 1, 0)
  
  # Chek untuk formats data yang salah
  num_cols <- sapply(df, is.numeric)
  incorrect_formats <- FALSE
  
  for (col in names(df)[num_cols]) {
    if (any(!grepl("^-?\\d+(\\.\\d+)?$", as.character(df[[col]])), na.rm = TRUE)) {
      incorrect_formats <- TRUE
      break
    }
  }
  
  results$Result[3] <- ifelse(incorrect_formats, 1, 0)
  
  # Buat data frame untuk hasil
  # Yes --> ada kesalahan bentuk data
  # None --> data bersih
  result_df <- data.frame(
    Test = results$Test,
    Result = ifelse(results$Result == 1, "Yes", "None")
  )
  
  return(kable(result_df))
}
check_data_quality(df_bantuan, "df_sebaran")
Test Result
Missing Values None
Duplicate Rows None
Incorrect Data Formats None
check_data_quality(df_sebaran, "df_bantuan")
Test Result
Missing Values None
Duplicate Rows None
Incorrect Data Formats None
Show dataset after dimensionality reduction
- Dataset 1 after dimensionality reduction
kable(head(df_bantuan_after))
Kecamatan Jenis.Bansos Jumlah.KPM
Andir BPNT 4427
Andir PKH 1913
Andir PBI-JK 17878
Antapani BPNT 1691
Antapani PKH 868
Antapani PBI-JK 7592
- Dataset 2 after dimensionality reduction
kable(head(df_sebaran_after))
Kecamatan Kelurahan Jumlah.Keluarga.Miskin Jumlah.Individu
Andir Campaka 2553 7328
Andir Ciroyom 3443 10205
Andir Dungus Cariang 3125 8710
Andir Garuda 1666 4812
Andir Kebon Jeruk 1537 3875
Andir Maleber 2948 8388
Show code
# Mengelompokkan berdasarkan Kecamatan dan menghitung jumlah keluarga miskin dan jumlah individu untuk setiap kecamatan hanya untuk kolom numerik
df_sebaran_baru <- df_sebaran_after %>%
  group_by(Kecamatan) %>%
  summarise(across(where(is.numeric), sum, na.rm = TRUE))

df_sebaran_baru <- df_sebaran_baru %>%
  arrange(Jumlah.Keluarga.Miskin)
kable(head(df_sebaran_baru))
Kecamatan Jumlah.Keluarga.Miskin Jumlah.Individu
Sumur Bandung 3165 8123
Bandung Wetan 3210 8369
Cinambo 3554 9427
Panyileukan 4053 10562
Gedebage 4354 10971
Cidadap 6532 17154
Show code
# Membuat dataframe baru 
# pivot table untuk menghitung jumlah KPM berdasarkan jenis-jenis bansos yang tersedia untuk setiap kecamatan
df_bantuan_baru <- aggregate(Jumlah.KPM ~ Kecamatan + `Jenis.Bansos`, data = df_bantuan_after, sum)

# Membuat pivot table menggunakan spread
df_bantuan_baru <- spread(df_bantuan_baru, key = `Jenis.Bansos`, value = Jumlah.KPM, fill = 0)

# Menambahkan kolom Total KPM
df_bantuan_baru$Total.KPM <- rowSums(df_bantuan_baru[, -1])
kable(head(df_bantuan_baru)) 
Kecamatan BPNT PBI-JK PKH Total.KPM
Andir 4427 17878 1913 24218
Antapani 1691 7592 868 10151
Arcamanik 2452 10743 1205 14400
Astanaanyar 2188 11928 1093 15209
Babakan Ciparay 7416 31468 3470 42354
Bandung Kidul 2190 10405 1273 13868
Show code
# Menggabungkan kedua data frame secara union
df_merged <- merge(df_sebaran_baru, df_bantuan_baru, by = "Kecamatan")
kable(df_merged)
Kecamatan Jumlah.Keluarga.Miskin Jumlah.Individu BPNT PBI-JK PKH Total.KPM
Andir 15272 43318 4427 17878 1913 24218
Antapani 6976 18493 1691 7592 868 10151
Arcamanik 9140 25334 2452 10743 1205 14400
Astanaanyar 9458 25949 2188 11928 1093 15209
Babakan Ciparay 22889 64393 7416 31468 3470 42354
Bandung Kidul 7820 20992 2190 10405 1273 13868
Bandung Kulon 19382 52967 5391 27678 3060 36129
Bandung Wetan 3210 8369 829 3368 451 4648
Batununggal 19048 50949 4328 21677 2341 28346
Bojongloa Kaler 23910 71538 8475 34688 3671 46834
Bojongloa Kidul 12435 32889 3856 18011 2065 23932
Buahbatu 11447 31102 3012 13937 1385 18334
Cibeunying Kaler 7961 20918 1859 7911 959 10729
Cibeunying Kidul 15271 40989 3573 15364 1943 20880
Cibiru 11175 28782 2784 12331 1648 16763
Cicendo 11963 32292 3539 12684 1452 17675
Cidadap 6532 17154 2126 6827 880 9833
Cinambo 3554 9427 1227 4170 622 6019
Coblong 14853 39987 4061 16713 1799 22573
Gedebage 4354 10971 1216 4526 670 6412
Kiaracondong 20887 55799 5119 23076 2391 30586
Lengkong 6851 18360 1735 8209 749 10693
Mandalajati 10828 28900 2590 11906 1279 15775
Panyileukan 4053 10562 1098 4384 493 5975
Rancasari 7588 19882 1903 8389 1036 11328
Regol 9039 23299 2504 11546 1244 15294
Sukajadi 14634 41754 5079 20262 2258 27599
Sukasari 7459 19750 2229 8647 861 11737
Sumur Bandung 3165 8123 993 3671 372 5036
Ujungberung 13357 34544 3202 16438 2096 21736

==================================================================================================================

D. Data Exploration:

Examining summary statistics of important features such as district names(“nama kecamatan”), and checking the number of rows and columns to understand the data structure.
Show Code
# eksplor/analisis berdasar data yang sudah di process sebelumnya
library(psych)

kable(describe(df_merged))
vars n mean sd median trimmed mad min max range skew kurtosis se
Kecamatan* 1 30 15.500 8.803408 15.5 15.500 11.1195 1 30 29 0.0000000 -1.3204946 1.607275
Jumlah.Keluarga.Miskin 2 30 11150.367 5842.736614 10143.0 10704.000 5117.1939 3165 23910 20745 0.5610459 -0.6642021 1066.732880
Jumlah.Individu 3 30 30259.533 16722.000865 27365.5 28755.708 14245.5621 8123 71538 63415 0.6996126 -0.3303113 3053.005694
BPNT 4 30 3103.067 1837.768154 2547.0 2870.417 1495.9434 829 8475 7646 1.1461944 0.9378230 335.529024
PBI-JK 5 30 13547.567 8105.944722 11917.0 12557.667 6906.6921 3368 34688 31320 0.9038297 0.1390350 1479.936258
PKH 6 30 1518.233 866.839431 1276.0 1417.917 839.8929 372 3671 3299 0.8378667 -0.0705082 158.262503
Total.KPM 7 30 18168.867 10773.282885 15534.5 16837.083 8823.6939 4648 46834 42186 0.9379980 0.2483873 1966.923352

The above statistical description is useful for understanding the data count, mean, median, minimum and maximum values, and also includes information about data skewness.

# Menghitung jumlah baris dan kolom untuk df_merged
n1 = nrow(df_merged)
nn1 = ncol(df_merged)

# Mencetak jumlah baris dan kolom
cat("Jumlah Baris x Kolom\n")
## Jumlah Baris x Kolom
cat( n1, " x ", nn1, "\n")
## 30  x  7
# Menghitung jumlah kecamatan yang ada
jumlah_kecamatan <- length(unique(df_merged$Kecamatan))
cat("Jumlah kecamatan:", jumlah_kecamatan, "\n")
## Jumlah kecamatan: 30
# menampilkan daftar kecamatan 
daftar_kecamatan <- unique(df_merged$Kecamatan)
cat("Daftar kecamatan:\n")
## Daftar kecamatan:
print(daftar_kecamatan)
##  [1] "Andir"            "Antapani"         "Arcamanik"        "Astanaanyar"     
##  [5] "Babakan Ciparay"  "Bandung Kidul"    "Bandung Kulon"    "Bandung Wetan"   
##  [9] "Batununggal"      "Bojongloa Kaler"  "Bojongloa Kidul"  "Buahbatu"        
## [13] "Cibeunying Kaler" "Cibeunying Kidul" "Cibiru"           "Cicendo"         
## [17] "Cidadap"          "Cinambo"          "Coblong"          "Gedebage"        
## [21] "Kiaracondong"     "Lengkong"         "Mandalajati"      "Panyileukan"     
## [25] "Rancasari"        "Regol"            "Sukajadi"         "Sukasari"        
## [29] "Sumur Bandung"    "Ujungberung"
# #jenis-jenis bansos yang diterima KPM 
jenis_bansos <- unique(df_bantuan$`Jenis.Bansos`)

# print
cat("Jenis-jenis Bansos yang Tersedia:\n")
## Jenis-jenis Bansos yang Tersedia:
for (bansos in jenis_bansos) {
  cat(bansos, "\n")
}
## BPNT 
## PKH 
## PBI-JK
# Menghitung total jumlah keluarga miskin
total_keluarga_miskin <- sum(df_merged$Jumlah.Keluarga.Miskin, na.rm = TRUE)
cat("Jumlah seluruh keluarga miskin:", total_keluarga_miskin)
## Jumlah seluruh keluarga miskin: 334511
# Menghitung total bantuan yang diberikan di kota bandung
total_Bantuan <- sum(df_merged$Total.KPM, na.rm = TRUE)
cat("Jumlah bantuan yang diberikan di kota bandung:", total_Bantuan)
## Jumlah bantuan yang diberikan di kota bandung: 545066

Data visualizations kami membuat 6 visualisasi barplot :

1. Comparing poverty levels across each district.

Show Code
library(plotly)
# Sorting dataframe berdasarkan 'Jumlah Keluarga Miskin' secara descending
df_merged_sorted <- arrange(df_merged, desc(`Jumlah.Keluarga.Miskin`))

# Plot
p1 <- plot_ly(df_merged_sorted, x = ~reorder(Kecamatan, Jumlah.Keluarga.Miskin), 
              y = ~Jumlah.Keluarga.Miskin, type = 'bar', marker = list(color = ~Jumlah.Keluarga.Miskin, colorscale = 'Reds')) %>%
  layout(title = 'Jumlah Kemiskinan berdasarkan setiap Kecamatan',
         xaxis = list(title = 'Kecamatan (district)', tickangle = -90),
         yaxis = list(title = 'Jumlah Keluarga Miskin'))
p1

Interpretation :

  - This bar plot visualization displays the number of poor families in each district to help identify districts with the highest poverty levels, which can prioritize government interventions in distributing aid.
  - Among all the districts in the data, it is noted that Bojongloa Kaler district has the highest poverty rate (calculated per family), while Sumur Bandung district has the lowest poverty rate.
  - The colors in the bar plot also indicate the severity of poverty levels; darker colors represent higher numbers of poverty.
  - There is a significant disparity across Bandung city, as some districts differ greatly in the number of poor families. For example, Sumur Bandung district has 3,165 poor families, whereas Bojongloa Kaler district has the highest with 23,910 poor families. This difference of 20,745 families between these two districts highlights substantial socioeconomic disparities and variations across Bandung city.
  

2. Comparing the number of Assistance (PKH, BPNT, PBI-JK) per district.

Show Code
# Library tambahan
library(tidyr)
library(patchwork)


# Scatter plot untuk BPNT vs Jumlah Keluarga Miskin
plot1 <- ggplot(df_merged, aes(x = Jumlah.Keluarga.Miskin, y = BPNT)) +
  geom_point(color = "blue") +
  labs(title = "BPNT vs Jumlah Keluarga Miskin",
       x = "Jumlah Keluarga Miskin",
       y = "Jumlah Penerima BPNT") +
  theme_minimal()

# Scatter plot untuk PKH vs Jumlah Keluarga Miskin
plot2 <- ggplot(df_merged, aes(x = Jumlah.Keluarga.Miskin, y = PKH)) +
  geom_point(color = "green") +
  labs(title = "PKH vs Jumlah Keluarga Miskin",
       x = "Jumlah Keluarga Miskin",
       y = "Jumlah Penerima PKH") +
  theme_minimal()

# Scatter plot untuk PBI-JK vs Jumlah Keluarga Miskin
plot3 <- ggplot(df_merged, aes(x = Jumlah.Keluarga.Miskin, y = `PBI-JK`)) +
  geom_point(color = "orange") +
  labs(title = "PBI-JK vs Jumlah Keluarga Miskin",
       x = "Jumlah Keluarga Miskin",
       y = "Jumlah Penerima PBI-JK") +
  theme_minimal()

# Menampilkan plot dalam satu tampilan menggunakan patchwork 
(plot1 / plot2 / plot3 ) + plot_layout(ncol = 2)

Explanation :

  - X-axis = Number of Poor Families
  - Y-axis = Number of Assistance (BPNT, PBI-JK, PKH)
  - Blue dots represent the number of BPNT assistance received
  - Green dots represent the number of PKH assistance received
  - Orange dots represent the number of PBI-JK assistance received

From the scatter plot above, it clearly shows a strong positive correlation pattern, where the amount of assistance increases for districts (kecamatan) with higher levels of poverty.

Show Code
# model linear
model <- lm(Total.Bantuan ~ Jumlah.Keluarga.Miskin, data = df_merged_baru)
df_merged_baru$fit <- predict(model)

# Scatter plot dengan garis linear 
p2 <- plot_ly(df_merged_baru, x = ~Jumlah.Keluarga.Miskin, y = ~Total.Bantuan, type = 'scatter', mode = 'markers', 
        marker = list(color = 'blue'), text = ~Kecamatan, hoverinfo = 'text') %>%
  add_trace(x = ~Jumlah.Keluarga.Miskin, y = ~fit, type = 'scatter', mode = 'lines', line = list(color = 'red')) %>%
  layout(title = 'Scatter Plot: Korelasi Jumlah Keluarga Miskin dengan Total bantuan yang diberikan',
         xaxis = list(title = 'Jumlah Keluarga Miskin'),
         yaxis = list(title = 'Jumlah Total Bantuan'))
p2

Explanation :

==================================================================================================================

E. Statistical Analysis:

In the statistical analysis, we used Pearson correlation analysis to measure the strength and direction of the linear relationship between two continuous variables. In this context, we calculated the correlation coefficients between the number of poor families and ‘total_assistance’, as well as between the number of poor families and each type of assistance (‘PKH’, ‘BPNT’, ‘PBI-JK’). The results are shown in the table below:
show code
correlation <- cor(df_merged %>% select(Jumlah.Keluarga.Miskin, BPNT, PKH, `PBI-JK`, Total.KPM), use = "complete.obs")
kable(correlation)
Jumlah.Keluarga.Miskin BPNT PKH PBI-JK Total.KPM
Jumlah.Keluarga.Miskin 1.0000000 0.9567950 0.9677741 0.9752840 0.9748997
BPNT 0.9567950 1.0000000 0.9712680 0.9810561 0.9868940
PKH 0.9677741 0.9712680 1.0000000 0.9894354 0.9906092
PBI-JK 0.9752840 0.9810561 0.9894354 1.0000000 0.9993778
Total.KPM 0.9748997 0.9868940 0.9906092 0.9993778 1.0000000

Explanation :

==================================================================================================================

F. Discussion:

The results of this statistical analysis indicate that social assistance programs in Bandung City can be considered effective in targeting districts that are most in need. The strong correlation between the number of poor families and the amount of assistance suggests that aid is allocated proportionally based on poverty levels in each district. Additionally, the strong correlations between the number of poor families and each type of assistance indicate that all types of assistance (PKH, BPNT, PBI-JK) contribute effectively to targeting poor families.

These findings align with the positive linear relationship observed in the scatter plot we created earlier, showing that there is a direct relationship between the number of poor families per district and the amount of assistance provided.

From our analysis results, it is evident that the Bandung government is implementing data-driven policies. They utilize poverty distribution maps at the district level to tailor the allocation of assistance to each district accordingly. This approach ensures that resources are directed where they are most needed, reflecting a strategic and informed approach to social assistance distribution.

However, this analysis only measures the linear relationship between the variables of social assistance and the distribution of poor families across districts. Other factors outside the scope of the available dataset, such as community participation rates, service quality, and the impact of assistance on family well-being, were not considered in this analysis.

==================================================================================================================

G. Conclusion:

In conclusion, the analysis of social assistance distribution in Bandung City reveals that these programs are not only well-targeted but also effective in reaching the most impoverished areas. This alignment with the Sustainable Development Goal of No Poverty underscores the city government’s commitment to addressing socio-economic disparities. Moving forward, continuous monitoring and evaluation will be crucial to ensure these efforts remain responsive to evolving community needs and contribute effectively to long-term poverty alleviation strategies.

==================================================================================================================

H. Refrence:

==================================================================================================================